home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 July: Mac OS SDK / Dev.CD Jul 96 SDK / Dev.CD Jul 96 SDK1.toast / Development Kits (Disc 1) / Apple Game Sprockets / Headers / DrawSprocket.h next >
Encoding:
C/C++ Source or Header  |  1996-05-16  |  9.0 KB  |  288 lines  |  [TEXT/CWIE]

  1. /*
  2. ********************************************************************************
  3. **
  4. **    File:        DrawSprocket.h
  5. **
  6. **    Author(s):    Dan Venolia (DV)
  7. **                Cary Farrier (CF)
  8. **
  9. **    Contents:    DrawSprocket interface file.
  10. **
  11. **    Copyright (c) 1995-96 Apple Computer, Inc.
  12. **                
  13. ********************************************************************************
  14. */
  15. #ifndef __DrawSprocket_h__
  16. #define __DrawSprocket_h__
  17.  
  18. #include <Types.h>
  19. #include <Events.h>
  20. #include <Quickdraw.h>
  21. #include <QDOffscreen.h>
  22. #include <Displays.h>
  23.  
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27.  
  28. /*
  29. ********************************************************************************
  30. ** error/warning codes, range -30440..-30459
  31. ********************************************************************************
  32. */
  33. enum {
  34.     kDSpNotInitializedErr                = -30440L,
  35.     kDSpSystemSWTooOldErr                = -30441L,
  36.     kDSpInvalidContextErr                = -30442L,
  37.     kDSpInvalidAttributesErr            = -30443L,
  38.     kDSpContextAlreadyReservedErr        = -30444L,
  39.     kDSpContextNotReservedErr            = -30445L,
  40.     kDSpContextNotFoundErr                = -30446L,
  41.     kDSpFrameRateNotReadyErr            = -30447L,
  42.     kDSpConfirmSwitchWarning            = -30448L,
  43.     kDSpInternalErr                        = -30449L
  44. };
  45.  
  46. /*
  47. ********************************************************************************
  48. ** constants
  49. ********************************************************************************
  50. */
  51. enum DSpDepthMask {
  52.     kDSpDepthMask_1        = 1U<<0,
  53.     kDSpDepthMask_2        = 1U<<1,
  54.     kDSpDepthMask_4        = 1U<<2,
  55.     kDSpDepthMask_8        = 1U<<3,
  56.     kDSpDepthMask_16    = 1U<<4,
  57.     kDSpDepthMask_32    = 1U<<5,
  58.     kDSpDepthMask_All    = ~0U
  59. };
  60. typedef enum DSpDepthMask DSpDepthMask;
  61.  
  62. enum DSpColorNeeds {
  63.     kDSpColorNeeds_DontCare    = 0L,
  64.     kDSpColorNeeds_Request    = 1L,
  65.     kDSpColorNeeds_Require    = 2L
  66. };
  67. typedef enum DSpColorNeeds DSpColorNeeds;
  68.  
  69. enum DSpContextState {
  70.     kDSpContextState_Active        = 0L,
  71.     kDSpContextState_Paused        = 1L,
  72.     kDSpContextState_Inactive    = 2L
  73. };
  74. typedef enum DSpContextState DSpContextState;
  75.  
  76. enum DSpContextOption {
  77.     kDSpContextOption_QD3DAccel        = 1U<<0,
  78.     kDSpContextOption_PageFlip        = 1U<<1,
  79.     kDSpContextOption_TripleBuffer    = 1U<<2
  80. };
  81. typedef enum DSpContextOption DSpContextOption;
  82.  
  83. enum DSpBufferKind {
  84.     kDSpBufferKind_Normal    = 0U
  85. };
  86. typedef enum DSpBufferKind DSpBufferKind;
  87.  
  88. enum DSpBufferScale {
  89.     kDSpBufferScale_1                = 0x00000001U,
  90.     kDSpBufferScale_2                = 0x00000002U,
  91.     kDSpBufferScale_2Interpolate    = 0x80000002U,
  92.     kDSpBufferScale_3                = 0x00000003U,
  93.     kDSpBufferScale_3Interpolate    = 0x80000003U,
  94.     kDSpBufferScale_4                = 0x00000004U,
  95.     kDSpBufferScale_4Interpolate    = 0x80000004U
  96. };
  97. typedef enum DSpBufferScale DSpBufferScale;
  98.  
  99. /*
  100. ********************************************************************************
  101. ** data types
  102. ********************************************************************************
  103. */
  104. typedef struct DSpAltBufferPrivate *DSpAltBufferReference;
  105. typedef struct DSpContextPrivate *DSpContextReference;
  106.  
  107. #define kDSpEveryContext ((DSpContextReference)NULL)
  108.  
  109. typedef Boolean (*DSpEventProcPtr)( EventRecord *inEvent );
  110. typedef Boolean (*DSpCallbackProcPtr)( DSpContextReference inContext,
  111.             void *inRefCon );
  112.  
  113. struct DSpContextAttributes {
  114.     Fixed                frequency;
  115.     UInt32                displayWidth;
  116.     UInt32                displayHeight;
  117.     UInt32                reserved1;
  118.     UInt32                reserved2;
  119.     UInt32                colorNeeds;
  120.     CTabHandle            colorTable;
  121.     OptionBits            contextOptions;
  122.     OptionBits            backBufferDepthMask;
  123.     OptionBits            displayDepthMask;
  124.     UInt32                backBufferBestDepth;
  125.     UInt32                displayBestDepth;
  126.     UInt32                pageCount;
  127.     Boolean                gameMustConfirmSwitch;
  128.     UInt32                reserved3[4];
  129. };
  130. typedef struct DSpContextAttributes DSpContextAttributes;
  131. typedef struct DSpContextAttributes *DSpContextAttributesPtr;
  132.  
  133. /*
  134. ********************************************************************************
  135. ** function prototypes
  136. ********************************************************************************
  137. */
  138.  
  139. /*
  140. ** global operations
  141. */
  142. OSStatus DSpStartup( void );
  143. OSStatus DSpShutdown( void );
  144.  
  145. OSStatus DSpGetFirstContext( DisplayIDType inDisplayID,
  146.             DSpContextReference *outContext );
  147. OSStatus DSpGetNextContext( DSpContextReference inCurrentContext,
  148.             DSpContextReference *outContext );
  149.  
  150. OSStatus DSpFindBestContext(
  151.             DSpContextAttributesPtr inDesiredAttributes,
  152.             DSpContextReference *outContext );
  153.  
  154. OSStatus DSpCanUserSelectContext(
  155.             DSpContextAttributesPtr inDesiredAttributes,
  156.             Boolean *outUserCanSelectContext );
  157. OSStatus DSpUserSelectContext(
  158.             DSpContextAttributesPtr inDesiredAttributes,
  159.             DisplayIDType inDialogDisplayLocation, DSpEventProcPtr inEventProc,
  160.             DSpContextReference *outContext );
  161.  
  162. OSStatus DSpProcessEvent( EventRecord *inEvent, Boolean *outEventWasProcessed );
  163.  
  164. OSStatus DSpSetBlankingColor( const RGBColor *inRGBColor );
  165.  
  166. OSStatus DSpSetDebugMode( Boolean inDebugMode );
  167.  
  168. OSStatus DSpFindContextFromPoint( Point inGlobalPoint,
  169.             DSpContextReference *outContext );
  170.  
  171. OSStatus DSpGetMouse( Point *outGlobalPoint );
  172.  
  173. /*
  174. ** alternate buffer operations
  175. */
  176. OSStatus DSpAltBuffer_New( DSpContextReference inContext, Boolean inVRAMBuffer,
  177.             DSpAltBufferReference *outAltBuffer );
  178. OSStatus DSpAltBuffer_Dispose( DSpAltBufferReference inAltBuffer );
  179. OSStatus DSpAltBuffer_RebuildTransparencyMask(
  180.             DSpAltBufferReference inAltBuffer, UInt32 inTransparencyValue );
  181. OSStatus DSpAltBuffer_InvalRect( DSpAltBufferReference inAltBuffer,
  182.             const Rect *inInvalidRect );
  183. OSStatus DSpAltBuffer_GetCGrafPtr( DSpAltBufferReference inAltBuffer,
  184.             DSpBufferKind inBufferKind, CGrafPtr *outCGrafPtr,
  185.             GDHandle *outGDevice );
  186.  
  187. /*
  188. ** context operations
  189. */
  190.  
  191. // general
  192. OSStatus DSpContext_GetAttributes( DSpContextReference inContext,
  193.             DSpContextAttributesPtr outAttributes );
  194.  
  195. OSStatus DSpContext_Reserve( DSpContextReference inContext,
  196.             DSpContextAttributesPtr inDesiredAttributes );
  197. OSStatus DSpContext_Release( DSpContextReference inContext );
  198.  
  199. OSStatus DSpContext_GetDisplayID( DSpContextReference inContext,
  200.             DisplayIDType *outDisplayID );
  201.  
  202. OSStatus DSpContext_GlobalToLocal( DSpContextReference inContext,
  203.             Point *ioPoint );
  204. OSStatus DSpContext_LocalToGlobal( DSpContextReference inContext,
  205.             Point *ioPoint );
  206.  
  207. OSStatus DSpContext_SetVBLProc( DSpContextReference inContext,
  208.             DSpCallbackProcPtr inProcPtr, void *inRefCon );
  209.  
  210. OSStatus DSpContext_GetFlattenedSize( DSpContextReference inContext,
  211.             UInt32 *outFlatContextSize );
  212. OSStatus DSpContext_Flatten( DSpContextReference inContext,
  213.             void *outFlatContext );
  214. OSStatus DSpContext_Restore( void *inFlatContext,
  215.             DSpContextReference *outRestoredContext );
  216.  
  217. OSStatus DSpContext_GetMonitorFrequency( DSpContextReference inContext,
  218.             Fixed *outFrequency );
  219. OSStatus DSpContext_SetMaxFrameRate( DSpContextReference inContext,
  220.             UInt32 inMaxFPS );
  221. OSStatus DSpContext_GetMaxFrameRate( DSpContextReference inContext,
  222.             UInt32 *outMaxFPS );
  223.  
  224. OSStatus DSpContext_SetState( DSpContextReference inContext,
  225.             DSpContextState inState );
  226. OSStatus DSpContext_GetState( DSpContextReference inContext,
  227.             DSpContextState *outState );
  228.  
  229. OSStatus DSpContext_IsBusy( DSpContextReference inContext,
  230.             Boolean *outBusyFlag );
  231.  
  232. // dirty rectangles        
  233. OSStatus DSpContext_SetDirtyRectGridSize( DSpContextReference inContext,
  234.             UInt32 inCellPixelWidth, UInt32 inCellPixelHeight );
  235. OSStatus DSpContext_GetDirtyRectGridSize( DSpContextReference inContext,
  236.             UInt32 *outCellPixelWidth, UInt32 *outCellPixelHeight );
  237. OSStatus DSpContext_GetDirtyRectGridUnits( DSpContextReference inContext,
  238.             UInt32 *outCellPixelWidth, UInt32 *outCellPixelHeight );
  239. OSStatus DSpContext_InvalBackBufferRect( DSpContextReference inContext,
  240.             const Rect *inRect );
  241.  
  242. // pixel scaling
  243. OSStatus DSpContext_SetScale( DSpContextReference inContext,
  244.             DSpBufferScale inScale );
  245. OSStatus DSpContext_GetScale( DSpContextReference inContext,
  246.             DSpBufferScale *outScale );
  247.  
  248. // overlays
  249. OSStatus DSpContext_SetOverlayAltBuffer( DSpContextReference inContext,
  250.             DSpAltBufferReference inNewOverlay );
  251. OSStatus DSpContext_GetOverlayAltBuffer( DSpContextReference inContext,
  252.             DSpAltBufferReference *outOverlay );
  253.             
  254. // underlays
  255. OSStatus DSpContext_SetUnderlayAltBuffer( DSpContextReference inContext,
  256.             DSpAltBufferReference inNewUnderlay );
  257. OSStatus DSpContext_GetUnderlayAltBuffer( DSpContextReference inContext,
  258.             DSpAltBufferReference *outUnderlay );
  259.  
  260. // gamma
  261. OSStatus DSpContext_FadeGammaOut( DSpContextReference inContext,
  262.             RGBColor *inZeroIntensityColor );
  263. OSStatus DSpContext_FadeGammaIn( DSpContextReference inContext,
  264.             RGBColor *inZeroIntensityColor );
  265. OSStatus DSpContext_FadeGamma( DSpContextReference inContext,
  266.             SInt32 inPercentOfOriginalIntensity,
  267.             RGBColor *inZeroIntensityColor );
  268.  
  269. // buffering
  270. OSStatus DSpContext_SwapBuffers( DSpContextReference inContext,
  271.             DSpCallbackProcPtr inBusyProc, void *inUserRefCon );
  272. OSStatus DSpContext_GetBackBuffer( DSpContextReference inContext,
  273.             DSpBufferKind inBufferKind, CGrafPtr *outBackBuffer );
  274.  
  275. // clut operations
  276. OSStatus DSpContext_SetCLUTEntries( DSpContextReference inContext,
  277.             const ColorSpec *inEntries, UInt16 inStartingEntry,
  278.             UInt16 inEntryCount );
  279. OSStatus DSpContext_GetCLUTEntries( DSpContextReference inContext,
  280.             ColorSpec *outEntries, UInt16 inStartingEntry,
  281.             UInt16 inEntryCount );
  282.             
  283. #ifdef __cplusplus
  284. }
  285. #endif
  286.  
  287. #endif /* __DrawSprocket_h__ */
  288.